فرض کن میخوای خونهات رو در برابر دزدها ایمن کنی. اولین کاری که میکنی اینه که همهٔ درها و پنجرهها رو چک میکنی تا ببینی کدومها باز یا قفل هستن. بعدش اونایی که باز هستن رو میبندی. توی لینوکس، اسکن کردن سیستم دقیقاً همینه: باید پورتهای باز، سرویسهای فعال و برنامههای در حال اجرا رو بررسی کنی تا نقاط ضعف رو پیدا و برطرف کنی. این جلسه بهت یاد میده چطور با ابزارهایی مثل nmap، ss، netstat، lsof و fuser سیستمت رو اسکن کنی!
قبل از اینکه هکرها سیستم شما را پیدا کنند، خودتان سیستم را بررسی کنید. این کار شامل چند مرحله است:
nmap (اسکنر پورت)
nmap (Network Mapper) یکی از قدرتمندترین ابزارهای اسکن شبکه و شناسایی سرویسها است. با آن میتوانید پورتهای باز، سرویسهای فعال و سیستمعامل میزبان را شناسایی کنید.
nmap روی شبکههایی که مالکیت ندارید، ممکن است غیرقانونی باشد. همیشه از این ابزار فقط روی سیستمهای خودتان استفاده کنید.
توضیح: -sT مخفف TCP Connect Scan است و پورتهای TCP باز را روی 127.0.0.1 (لوکالهوست) بررسی میکند.
بسیاری از سرویسها از پروتکل UDP استفاده میکنند (مثل DNS، DHCP، SNMP). این پورتها معمولاً در اسکنهای TCP دیده نمیشوند، پس حتماً باید UDP را هم بررسی کنید.
توضیح: -sU مخفف UDP Scan است. اسکن UDP به دلیل ماهیت این پروتکل، معمولاً کندتر و کمتر دقیق است، اما برای شناسایی سرویسهای UDP ضروری است.
با گسترش IPv6، بسیاری از سیستمها سرویسهای خود را روی این پروتکل نیز ارائه میدهند. حتماً آدرس IPv6 لوکالهوست (::1) را نیز اسکن کنید.
توضیح: با گزینهٔ -6 به nmap میگوییم که از IPv6 استفاده کند. ::1 معادل 127.0.0.1 در IPv6 است.
علاوه بر لوکالهوست، سیستم را از نمای شبکه نیز اسکن کنید. از آدرس IP واقعی خود (مثلاً 192.168.100.11) استفاده کنید تا ببینید چه سرویسهایی از بیرون در دسترس هستند.
توضیح: این کار به شما نشان میدهد که از دید سایر دستگاههای شبکه چه سرویسهایی روی سیستم شما باز است.
ss و netstat (بررسی پورتهای باز)
ss و netstat دو ابزار داخلی لینوکس برای نمایش پورتهای باز و اتصالات شبکه هستند. ss جدیدتر و سریعتر است.
ss (Socket Statistics)netstatnetstat (Network Statistics)ssتوضیح:
-l → فقط پورتهای در حال گوشدادن (Listening) را نمایش بده.-t → فقط پورتهای TCP را نمایش بده.-u → فقط پورتهای UDP را نمایش بده.netstatss -ltu سریعترین و کاملترین روش برای مشاهدهٔ پورتهای باز در لینوکس مدرن است.
lsof (بررسی برنامههای پشت پورت)
lsof (مخفف List Open Files) لیست فایلهای باز را نشان میدهد. در لینوکس، همه چیز فایل است، از جمله سوکتهای شبکه. با lsof میتوانید ببینید کدام برنامه روی کدام پورت گوش میدهد.
توضیح: این دستور همهٔ سرویسهای TCP که در حالت LISTEN هستند را با نام برنامه و PID نمایش میدهد.
توضیح: با lsof -i tcp:22 میتوانید ببینید کدام برنامه روی پورت ۲۲ (SSH) گوش میدهد.
lsof برای عیبیابی و امنیت بسیار مفید است. اگر یک پورت ناشناس باز است، با lsof میتوانید برنامهی پشت آن را پیدا کنید.
fuser (نمایش PID پورت)
fuser یک ابزار قدرتمند برای شناسایی فرآیندهایی است که از یک فایل، دایرکتوری یا پورت شبکه استفاده میکنند.
توضیح:
-v → نمایش جزئیات بیشتر.-n → مشخص کردن نوع (tcp یا udp).fuser برای پیدا کردن PID یک پورت و خاتمه دادن به آن بسیار مفید است: fuser -k 22/tcp
بعد از اینکه سرویسهای فعال را شناسایی کردید، باید آنهایی که نیاز ندارید را غیرفعال کنید. این کار با systemctl انجام میشود.
فرض کنید اسکن نشان داده که سرویس apache2 روی پورت ۸۰ فعال است، اما شما از آن استفاده نمیکنید:
| ابزار | دستور | کاربرد |
|---|---|---|
nmap |
nmap -sT 127.0.0.1 |
اسکن TCP لوکالهوست |
nmap |
nmap -sU 127.0.0.1 |
اسکن UDP لوکالهوست |
nmap |
nmap -6 ::1 |
اسکن IPv6 |
ss |
ss -ltu |
نمایش پورتهای TCP/UDP در حال گوشدادن |
netstat |
netstat --tcp --listening |
نمایش پورتهای TCP در حال گوشدادن |
lsof |
lsof -iTCP -sTCP:LISTEN |
نمایش برنامههای پشت پورتهای TCP |
lsof |
lsof -i tcp:22 |
بررسی برنامه روی پورت ۲۲ |
fuser |
fuser -vn tcp 22 |
نمایش PID برنامه روی پورت ۲۲ |
systemctl |
systemctl stop/disable SERVICE |
متوقف و غیرفعال کردن سرویس |
nmap → اسکن حرفهای پورتها (TCP، UDP، IPv6).ss -ltu → مشاهدهٔ سریع پورتهای باز.lsof → پیدا کردن برنامهٔ پشت هر پورت.fuser → پیدا کردن PID یک پورت.systemctl stop/disable → غیرفعال کردن سرویسهای غیرضروری.یک اسکریپت بنویسید که:
nmap پورتهای باز روی لوکالهوست را شناسایی کند.ss -ltu لیست پورتهای باز را نمایش دهد.lsof برنامههای پشت هر پورت را پیدا کند.